package co.infinum.pokemon.test; import com.squareup.okhttp.mockwebserver.MockResponse; import com.squareup.okhttp.mockwebserver.RecordedRequest; import junit.framework.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import android.app.Activity; import android.content.Intent; import android.widget.TextView; import co.infinum.pokemon.PokemonTestApp; import co.infinum.pokemon.R; import co.infinum.pokemon.activities.PokemonDetailsActivity; import co.infinum.pokemon.helpers.CustomRobolectricGradleTestRunner; import co.infinum.pokemon.models.Pokemon; import co.infinum.pokemon.shadows.ShadowGson; import co.infinum.pokemon.utils.ResourceUtils; import static org.assertj.android.api.Assertions.assertThat; /** * Created by ivan on 12/10/15. */ @RunWith(CustomRobolectricGradleTestRunner.class) @Config(shadows = {ShadowGson.class}) public class PokemonDetailsTest extends BaseTest { private PokemonDetailsActivity buildActivity(Pokemon pokemon) { Intent intent = new Intent(RuntimeEnvironment.application, PokemonDetailsActivity.class); intent.putExtra(PokemonDetailsActivity.EXTRA_POKEMON, pokemon); return Robolectric.buildActivity(PokemonDetailsActivity.class) .withIntent(intent) .create() .start() .resume() .visible() .get(); } @Test public void shouldMakeRequestToCorrectResourceUri() throws Exception { String resourceUri = "api/v1/pokemon/6/"; Pokemon pokemon = new Pokemon(); pokemon.setResourceUri(resourceUri); Activity activity = buildActivity(pokemon); RecordedRequest request = takeLastRequest(); Assert.assertEquals("/" + resourceUri, request.getPath()); } @Test public void nameOk() throws Exception { PokemonTestApp.getMockWebServer().enqueue( new MockResponse() .setResponseCode(200) .setBody(ResourceUtils.readFromFile("charizard.json")) ); String resourceUri = "api/v1/pokemon/6/"; Pokemon pokemon = new Pokemon(); pokemon.setResourceUri(resourceUri); Activity activity = buildActivity(pokemon); RecordedRequest request = takeLastRequest(); //Check that name in details is displayed properly. assertThat(activity.findViewById(R.id.name)).isVisible(); assertThat((TextView) activity.findViewById(R.id.name)).hasText("Charizard"); } }